﻿/*********************************************************************************
**                                                                              **
**  Copyright (C) 2024 LiLong                                                   **
**  This file is part of WaveSimulator.                                         **
**                                                                              **
**  WaveSimulator is free software: you can redistribute it and/or modify       **
**  it under the terms of the GNU General Public License as published by        **
**  the Free Software Foundation, either version 3 of the License, or           **
**  (at your option) any later version.                                         **
**                                                                              **
**  WaveSimulator is distributed in the hope that it will be useful,            **
**  but WITHOUT ANY WARRANTY; without even the implied warranty of              **
**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               **
**  GNU General Public License for more details.                                **
**                                                                              **
**  You should have received a copy of the GNU General Public License           **
**  along with WaveSimulator. If not, see <https://www.gnu.org/licenses/>.      **
**********************************************************************************/
#pragma once

#include <QString>

#include <ranges>
#include <type_traits>

namespace WSCore
{
enum class Function
{
    Custom,
    Sin,
    Triangle,
    Square
};

static inline QString toString(Function fn)
{
    constexpr static auto list = std::views::enumerate({ "Custom", "Sin", "Triangle", "Square" });
    return list[static_cast<std::underlying_type_t>(fn)];
}
} // namespace WSCore